package 课堂作业api_day9;

import java.io.File;
import java.util.HashMap;
import java.util.Set;

public class Demo3 {
    //案例需求:
    //统计一个文件夹中每种文件的个数并打印
    //打印格式如下：txt:2个,java:3个,iml:1个
    public static void main(String[] args) {
        //该模块下的文件
        File file = new File("aaa");
        //键为文件名
        HashMap<String, Integer> map = new HashMap<>();
        getfile(map, file);
        //键集合
        Set<String> set = map.keySet();
        for (String s : set) {
            Integer count = map.get(s);
            System.out.println(s + ":" + count + "个");
        }
    }

    private static void getfile(HashMap<String, Integer> map, File file) {
        //将给文件下的每个文件地址传入数组
        File[] files = file.listFiles();
        //1、进入文件
        for (File file1 : files) {
            //2、判断是文件还是文件夹
            if (file1.isFile()) {
                //获取子文件名
                String filename = file1.getName();
                //将文件名分割为后缀名与前缀名
                String[] namearr = filename.split("\\.");
                //获得前缀名
                String Endname = namearr[1];
                //将前缀名作为键
                if (map.containsKey(Endname)) {
                    //如果进来了，表示之前也出现过，值加1.
                    Integer count = map.get(Endname);
                    count++;
                    map.put(Endname, count);
                } else {
                    //键第一次出现
                    map.put(Endname, 1);
                }
            } else {
                //判断是文件夹就递归
                getfile(map, file1);
            }
        }
    }
}